package com.ruoyi.system.service;

import java.util.List;

import com.ruoyi.system.consant.RiskLevel;
import com.ruoyi.system.domain.JifenRiskControlLog;

/**
 * 积分风控日志Service接口
 * 
 * @author ruoyi
 * @date 2025-05-14
 */
public interface IJifenRiskControlLogService 
{
    /**
     * 查询积分风控日志
     * 
     * @param logId 积分风控日志主键
     * @return 积分风控日志
     */
    public JifenRiskControlLog selectJifenRiskControlLogById(Long logId);

    /**
     * 查询积分风控日志列表
     * 
     * @param jifenRiskControlLog 积分风控日志
     * @return 积分风控日志集合
     */
    public List<JifenRiskControlLog> selectJifenRiskControlLogList(JifenRiskControlLog jifenRiskControlLog);

    /**
     * 新增积分风控日志
     * 
     * @param jifenRiskControlLog 积分风控日志
     * @return 结果
     */
    public int insertJifenRiskControlLog(JifenRiskControlLog jifenRiskControlLog);

    /**
     * 修改积分风控日志
     * 
     * @param jifenRiskControlLog 积分风控日志
     * @return 结果
     */
    public int updateJifenRiskControlLog(JifenRiskControlLog jifenRiskControlLog);

    /**
     * 批量删除积分风控日志
     * 
     * @param logIds 需要删除的积分风控日志主键集合
     * @return 结果
     */
    public int deleteJifenRiskControlLogByIds(Long[] logIds);

    /**
     * 删除积分风控日志信息
     * 
     * @param logId 积分风控日志主键
     * @return 结果
     */
    public int deleteJifenRiskControlLogById(Long logId);

    /**
     * 检查用户风险等级
     * 
     * @param userId 用户ID
     * @param behaviorType 行为类型
     * @param deviceFingerprint 设备指纹
     * @return 风险等级（0：正常 1：低风险 2：中风险 3：高风险）
     */
    public String checkRiskLevel(Long userId, String behaviorType, String deviceFingerprint);

    /**
     * 发放积分
     * 
     * @param userId 用户ID
     * @param behaviorType 行为类型
     * @param adId 广告ID
     * @return 发放结果
     */
    public boolean grantPoints(Long userId, String behaviorType, Long adId);

    RiskLevel checkAdBehavior(String userId, String deviceId, String ip);
}
